package com.itheima.health.service.impl;

import com.itheima.health.dao.PermissionDao;
import com.itheima.health.dao.RoleDao;
import com.itheima.health.dao.UserDao;
import com.itheima.health.pojo.Permission;
import com.itheima.health.pojo.Role;
import com.itheima.health.pojo.User;
import com.itheima.health.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 张致玮
 * @description 用户服务实现类
 * @date 2019/9/6
 **/
@Slf4j
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;
    @Autowired
    private RoleDao roleDao;
    @Autowired
    private PermissionDao permissionDao;


    @Override
    public User findByUsername(String username) {
        //先查基本信息
        User user = userDao.selectByUsername(username);
        if (null == user) {
            //用户不存在
            return null;
        }
        //user 用户id知道了 ... user里面 角色集合没有数据
        //根据用户id 去 角色关系表中查询 角色id --- 角色id 查询角色集合
        //List<Role>
        //关联关系表 ---角色表 去查询这个用户 所具备的所有角色集合
        List<Role> roles = roleDao.selectByUserId(user.getId());
        //查询到的role中有没有权限呢？没有
        for (Role role : roles) {
            //每个role中没有权限 根据role去查
            //角色 根据角色id查询 所具备所有的权限
            List<Permission> permissions= permissionDao.selectByRoleId(role.getId());
            //该角色role 的权限有了
            role.getPermissions().addAll(permissions);
        }
        //权限设置到角色里
        //角色 设置到用户里
        user.getRoles().addAll(roles);
        return user;//用户包含了多个角色 ---多个权限......
    }

    @Override
    public User findByTelephone(String telephone) {
        return userDao.findByTelephone(telephone);
    }
}
